console.log(1);
setTimeout(function () {
  console.log(2);
}, 0);
var promise = new Promise(function (resolve, reject) {
  console.log(3);
  setTimeout(function () {
    console.log(4);
    resolve();
  }, 1000);
});
promise.then(function () {
  console.log(5);
  setTimeout(function () {
    console.log(6);
  }, 0);
});
console.log(7);

// 输出结果顺序：1 3 7 2 4 5 6
// 解析：JS代码执行优先级：主线程 -> 微任务 -> 宏任务


var promise = new Promise(function (resolve, reject) {
    setTimeout(function () {
      console.log(1);
      resolve();
    }, 3000);
  });
  promise
    .then(function () {
      setTimeout(function () {
        console.log(2);
      }, 2000);
    })
    .then(function () {
      setTimeout(function () {
        console.log(3);
      }, 1000);
    })
    .then(function () {
      setTimeout(function () {
        console.log(4);
      }, 0);
    });
  // 输出结果：3s后输出1和4，再过1s输出3，再过1s输出2
  // 解析：promise.then()方法要等resolve()执行以后，才会执行后面的then方法，后面的这些方法按定时器异步流程处理